home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / mozilla-firefox / include / xpcom / nsServiceManagerUtils.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  4KB  |  134 lines

  1. /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
  2. /* ***** BEGIN LICENSE BLOCK *****
  3.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  4.  *
  5.  * The contents of this file are subject to the Mozilla Public License Version
  6.  * 1.1 (the "License"); you may not use this file except in compliance with
  7.  * the License. You may obtain a copy of the License at
  8.  * http://www.mozilla.org/MPL/
  9.  *
  10.  * Software distributed under the License is distributed on an "AS IS" basis,
  11.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  12.  * for the specific language governing rights and limitations under the
  13.  * License.
  14.  *
  15.  * The Original Code is XPCOM.
  16.  *
  17.  * The Initial Developer of the Original Code is
  18.  * Netscape Communications Corporation.
  19.  * Portions created by the Initial Developer are Copyright (C) 1998
  20.  * the Initial Developer. All Rights Reserved.
  21.  *
  22.  * Contributor(s):
  23.  *
  24.  * Alternatively, the contents of this file may be used under the terms of
  25.  * either of the GNU General Public License Version 2 or later (the "GPL"),
  26.  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  27.  * in which case the provisions of the GPL or the LGPL are applicable instead
  28.  * of those above. If you wish to allow use of your version of this file only
  29.  * under the terms of either the GPL or the LGPL, and not to allow others to
  30.  * use your version of this file under the terms of the MPL, indicate your
  31.  * decision by deleting the provisions above and replace them with the notice
  32.  * and other provisions required by the GPL or the LGPL. If you do not delete
  33.  * the provisions above, a recipient may use your version of this file under
  34.  * the terms of any one of the MPL, the GPL or the LGPL.
  35.  *
  36.  * ***** END LICENSE BLOCK ***** */
  37.  
  38. #ifndef nsServiceManagerUtils_h__
  39. #define nsServiceManagerUtils_h__
  40.  
  41. #include "nsIServiceManager.h"
  42. #include "nsCOMPtr.h"
  43.  
  44. inline
  45. const nsGetServiceByCID
  46. do_GetService(const nsCID& aCID)
  47. {
  48.     return nsGetServiceByCID(aCID);
  49. }
  50.  
  51. inline
  52. const nsGetServiceByCIDWithError
  53. do_GetService(const nsCID& aCID, nsresult* error)
  54. {
  55.     return nsGetServiceByCIDWithError(aCID, error);
  56. }
  57.  
  58. inline
  59. const nsGetServiceByContractID
  60. do_GetService(const char* aContractID)
  61. {
  62.     return nsGetServiceByContractID(aContractID);
  63. }
  64.  
  65. inline
  66. const nsGetServiceByContractIDWithError
  67. do_GetService( const char* aContractID, nsresult* error)
  68. {
  69.     return nsGetServiceByContractIDWithError(aContractID, error);
  70. }
  71.  
  72. class nsGetServiceFromCategory : public nsCOMPtr_helper
  73. {
  74.  public:
  75.     nsGetServiceFromCategory(const char* aCategory, const char* aEntry,
  76.                              nsresult* aErrorPtr)
  77.         : mCategory(aCategory),
  78.         mEntry(aEntry),
  79.         mErrorPtr(aErrorPtr)
  80.         {
  81.             // nothing else to do
  82.         }
  83.     
  84.     virtual nsresult NS_FASTCALL operator()( const nsIID&, void** ) const;
  85.  protected:
  86.     const char*                 mCategory;
  87.     const char*                 mEntry;
  88.     nsresult*                   mErrorPtr;
  89. };
  90.  
  91. inline
  92. const nsGetServiceFromCategory
  93. do_GetServiceFromCategory( const char* category, const char* entry,
  94.                            nsresult* error = 0)
  95. {
  96.     return nsGetServiceFromCategory(category, entry, error);
  97. }
  98.  
  99. NS_COM_GLUE nsresult
  100. CallGetService(const nsCID &aClass, const nsIID &aIID, void **aResult);
  101.  
  102. NS_COM_GLUE nsresult
  103. CallGetService(const char *aContractID, const nsIID &aIID, void **aResult);
  104.  
  105. // type-safe shortcuts for calling |GetService|
  106. template <class DestinationType>
  107. inline
  108. nsresult
  109. CallGetService( const nsCID &aClass,
  110.                 DestinationType** aDestination)
  111. {
  112.     NS_PRECONDITION(aDestination, "null parameter");
  113.     
  114.     return CallGetService(aClass,
  115.                           NS_GET_IID(DestinationType),
  116.                           NS_REINTERPRET_CAST(void**, aDestination));
  117. }
  118.  
  119. template <class DestinationType>
  120. inline
  121. nsresult
  122. CallGetService( const char *aContractID,
  123.                 DestinationType** aDestination)
  124. {
  125.     NS_PRECONDITION(aContractID, "null parameter");
  126.     NS_PRECONDITION(aDestination, "null parameter");
  127.     
  128.     return CallGetService(aContractID,
  129.                           NS_GET_IID(DestinationType),
  130.                           NS_REINTERPRET_CAST(void**, aDestination));
  131. }
  132.  
  133. #endif
  134.